import * as dicts from '$/dicts/index.js'

/**
 * 根据字典和值获取对应的标签
 *
 * 此函数旨在提供一种灵活的方式来解析不同类型的字典数据结构
 * 它支持字典作为函数、字符串键或直接的数据结构传递，并从中获取与给定值对应的标签
 *
 * @param {function|string|array} dict - 字典可以是一个函数、一个字符串键或一个数据结构数组
 * @param {any} value - 需要查找的值
 * @returns {string} - 返回与值对应的标签，如果没有找到，则返回空字符串
 */
export function getDictLabel(dict, value) {
  // 初始化标签为空字符串
  let label = ''

  // 如果字典是一个函数，调用该函数以获取标签
  if (typeof dict === 'function') {
    label = dict(value)
  }
  // 如果字典是一个字符串，使用该字符串作为键从字典模块中获取对应的项，并查找匹配的标签
  else if (typeof dict === 'string') {
    label = dicts?.[dict]?.find(item => item.value == value)?.label
  }
  // 如果字典是一个数据结构数组，直接从中查找匹配的标签
  else {
    label = dict?.find(item => item.value == value)?.label
  }

  // 如果没有找到标签，返回空字符串
  if (!label) {
    return ''
  }

  // 返回找到的标签
  return label
}
